package es.ull.etsii.aa.utiles;

import es.ull.etsii.aa.datos.Nodo;

public class Segmento implements Comparable<Segmento> {
	
	private Nodo a, b;
	
	/**
	 * Constructor de Segmento
	 * @param n1
	 * 		Nodo inicial del Segmento
	 * @param n2
	 * 		Nodo final del Segmento
	 */
	public Segmento(Nodo n1, Nodo n2) {
		a = n1;
		b = n2;
	}
	
	/**
	 * Getter b
	 * @return
	 * 		Devuelve el Nodo final del Segmento
	 */
	public Nodo getFinalNode() {
		return b;
	}
	
	/**
	 * compareTo
	 * 		Compara el segmento AB con un segmento AC
	 * 		pasado por parametro en base a la distancia
	 * 		euclidea entre cada Nodo
	 * @param a_c
	 * 		Segmento AC contra el que se compara la distancia
	 */
	public int compareTo(Segmento a_c) {		
		return a.distanciaEuclidea(b).compareTo(a_c.a.distanciaEuclidea(a_c.b));
	}
	
	public String toString() {
		StringBuilder sb = new StringBuilder();

		sb.append(this.getClass().getSimpleName());
		sb.append("(Seg: ");
		sb.append(a.getId());
		sb.append("-" + b.getId());
		sb.append(" dist:");
		sb.append(a.distanciaEuclidea(b).toString());
		sb.append(")");
		
		return sb.toString();
	}
}
